package hash;

import java.util.*;

/**遍历strs ，每次拿一个字符串，然后对字符串进行排序，得到一个key，然后判断map中是否存在这个key，如果存在，则将字符串加入到对应的list中，
 * 如果不存在，则创建一个list，并将字符串加入到list中，然后将list加入到map中。
 *
 */
public class groupAnagrams {
    public List<List<String>> groupAnagrams(String[] strs) {
        Map<String,List<String>> map = new HashMap<>();
        for (String s : strs){
            char[] str = s.toCharArray();
            Arrays.sort(str);
            String key = String.valueOf(str);
            List<String> list = map.getOrDefault(key,new ArrayList<>());
            list.add(s);
            map.put(key,list);

        }
        return new ArrayList<List<String>>(map.values());
    }

    public static void main(String[] args) {
        groupAnagrams g = new groupAnagrams();
        String[] strs = {"eat","tea","tan","ate","nat","bat"};
        List<List<String>> res = g.groupAnagrams(strs);
        for (List<String> list : res) {
            for (String s : list) {
                System.out.print(s + " ");
            }
            System.out.println();
        }
    }
}
